#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
战斗客户端迁移脚本
用于将打包后的cocos客户端从client/build目录迁移到creeps_server/static/battle目录
"""

import os
import shutil
import sys
from pathlib import Path


def remove_directory_contents(directory_path):
    """
    删除指定目录下的所有文件和文件夹
    
    Args:
        directory_path (str): 要清空的目录路径
    """
    if not os.path.exists(directory_path):
        print(f"目标目录不存在: {directory_path}")
        return
    
    print(f"正在清空目录: {directory_path}")
    
    for item in os.listdir(directory_path):
        item_path = os.path.join(directory_path, item)
        try:
            if os.path.isdir(item_path):
                shutil.rmtree(item_path)
                print(f"已删除文件夹: {item}")
            else:
                os.remove(item_path)
                print(f"已删除文件: {item}")
        except Exception as e:
            print(f"删除失败 {item}: {e}")


def copy_directory_contents(source_path, target_path):
    """
    复制源目录下的所有内容到目标目录
    
    Args:
        source_path (str): 源目录路径
        target_path (str): 目标目录路径
    """
    if not os.path.exists(source_path):
        print(f"源目录不存在: {source_path}")
        return False
    
    # 确保目标目录存在
    os.makedirs(target_path, exist_ok=True)
    
    print(f"正在复制文件从 {source_path} 到 {target_path}")
    
    try:
        for item in os.listdir(source_path):
            source_item = os.path.join(source_path, item)
            target_item = os.path.join(target_path, item)
            
            if os.path.isdir(source_item):
                shutil.copytree(source_item, target_item)
                print(f"已复制文件夹: {item}")
            else:
                shutil.copy2(source_item, target_item)
                print(f"已复制文件: {item}")
        
        return True
    except Exception as e:
        print(f"复制过程中出现错误: {e}")
        return False


def main():
    """
    主函数：执行战斗客户端迁移
    """
    # 获取脚本所在目录的父目录（creeps_server目录）
    script_dir = Path(__file__).parent
    creeps_server_dir = script_dir.parent
    project_root = creeps_server_dir.parent
    
    # 定义路径
    target_battle_dir = creeps_server_dir / "static" / "battle"
    source_build_dir = project_root / "client" / "build" / "web-mobile"
    
    print("=" * 50)
    print("战斗客户端迁移脚本")
    print("=" * 50)
    print(f"源目录: {source_build_dir}")
    print(f"目标目录: {target_battle_dir}")
    print()
    
    # 检查源目录是否存在
    if not source_build_dir.exists():
        print(f"错误: 源构建目录不存在: {source_build_dir}")
        print("请先构建客户端项目!")
        sys.exit(1)
    
    # 检查源目录是否为空
    if not any(source_build_dir.iterdir()):
        print(f"错误: 源构建目录为空: {source_build_dir}")
        print("请先构建客户端项目!")
        sys.exit(1)
    
    # 步骤1: 清空目标目录
    print("步骤1: 清空目标目录")
    remove_directory_contents(str(target_battle_dir))
    print()
    
    # 步骤2: 复制构建文件
    print("步骤2: 复制构建文件")
    success = copy_directory_contents(str(source_build_dir), str(target_battle_dir))
    print()
    
    if success:
        print("✅ 战斗客户端迁移完成!")
        print(f"构建文件已成功迁移到: {target_battle_dir}")
    else:
        print("❌ 战斗客户端迁移失败!")
        sys.exit(1)


if __name__ == "__main__":
    main()